//axios二次封装
//导入axios
import axios from 'axios'

import { Toast } from 'vant'
//实例化axios实例对象
var service = axios.create({
    timeout: 10 * 1000, //设置请求超时时间
    baseURL: '/api', //请求地址的基准路径, 
    //假设在代码中发请求 /user/list , 实际发出的请求是 /api/user/list
    //假设在代码中发请求 /user/login , 实际发出的请求是 /api/user/login
    //假设在代码中发请求 /good/list , 实际发出的请求是 /api/good/list
})

//设置请求拦截器, 
service.interceptors.request.use(
    (config) => { //请求发出前会立即自动执行的回调函数

        //统一设置请求头
        // config.headers['Authorization'] = 'Bearer' + ' ' + localStorage.getItem('token');
        // 显示loading
        Toast.loading({ message: 'loading...', duration: 0 })

        return config;
    }, (error) => { //请求发出前, 发生错误的回调函数
        return Promise.reject(error);
    })

//设置响应拦截器
service.interceptors.response.use(
    (res) => { //请求从服务器返回前会立即自动执行的回调函数
        Toast.clear(); //隐藏loading加载
        return res;
    }, (error) => { //请求从服务器返回前, 发生错误的回调函数
        //error 是响应错误对象
        Toast.clear();
        if (error.response.status == 401) {
            console.log('身份认证过期,请重新登录!');
            // 跳到登录页面
            // this.$router.push('/login');
        } else if (error.response.status == 404) {
            console.log('访问路径有误!');
        } else if (error.response.status == 500) {
            console.log('服务器内部错误! 请联系管理员处理!');
        }
    })

export default service;